/******************************************************************************
 * File Name     : ram_disk_format_data.c
 * Description   : Contains initialized memory that provides a FAT file system
 *                 format to the ram-disk.
 ******************************************************************************/

/*******************************************************************************
 Includes   <System Includes> , "Project Includes"
 * ******************************************************************************/

#include "usb_pmsc_apl.h"

/*******************************************************************************
 Macro definitions
 ******************************************************************************/

/*******************************************************************************
 Typedef definitions
 ******************************************************************************/

/*******************************************************************************
 Exported global variables (to be accessed by other files)
 ******************************************************************************/

/* STRG_SECTSIZE = 512(Define for r_media_driver_api_config.h) */
const uint8_t g_ram_disk_boot_sector[STRG_SECTSIZE] =
{
    /* Master boot record (FAT16) */
    /* 0x00:JMP code (PBR) */
    0xEB, 0x3C, 0x90,

    /* 0x03:OEM name */
    'M', 'S', 'D', 'O', 'S', '5', '.', '0',

    /* 0x0B:Sector size */
    (uint8_t) (STRG_SECTSIZE & 0xfful), ((uint8_t) (STRG_SECTSIZE >> 8) & 0xfful),

    /* 0x0D:Cluster size */
    RAMDISK_CLSTSIZE,

    /* 0x0E:reserved (FAT entry) */
    0x02, 0x00,

    /* 0x10:FAT number */
    RAMDISK_FATNUM,

    /* 0x11:ROOT entry address */
    0x00, 0x02,

    /* 0x13:Total sector(16bit) */
    #if STRG_TOTALSECT < 65536
    /*  Total Sector  bit7-0, bit15-8*/
    (uint8_t) (STRG_TOTALSECT & 0xfful), ((uint8_t) (STRG_TOTALSECT >> 8) & 0xfful),
    #else
    0x00, 0x00,
    #endif
    /* 0x15:Media type */
    RAMDISK_MEDIATYPE,

    /* 0x16:FAT size */
    (uint8_t) (RAMDISK_FATSIZE & 0xfful), ((uint8_t) (RAMDISK_FATSIZE >> 8) & 0xfful),

    /* 0x18:Track sector */
    0x00, 0x00,

    /* 0x1A:Head number */
    0x00, 0x00,

    /* 0x1C:Offset sector */
    0x00, 0x00, 0x00, 0x00,

    /* 0x20:Total sector(32bit) */
    #if STRG_TOTALSECT < 65536
    0x00, 0x00, 0x00, 0x00,
    #else
    (uint8_t)(STRG_TOTALSECT & 0xfful),
    ((uint8_t)(STRG_TOTALSECT >> 8) & 0xfful),
    ((uint8_t)(STRG_TOTALSECT >> 16) & 0xfful),
    ((uint8_t)(STRG_TOTALSECT >> 24) & 0xfful),
    #endif
    /* 0x24:Drive number */
    0x00,

    /* 0x25:reserved */
    0x00,

    /* 0x26:Boot signature */
    0x00,

    /* 0x27:Volume serial number */
    0x00, 0x00, 0x00, 0x00,

    /* 0x2B:Volume label */
    'N', 'O', ' ', 'N', 'A', 'M', 'E', ' ', ' ', ' ', ' ',

    /* 0x36:File system type */
    #if RAMDISK_FATLENGTH == 341
    'F', 'A', 'T', '1', '2', ' ', ' ', ' ',
    #endif  /* RAMDISK_FATLENGTH == 341 */

    #if RAMDISK_FATLENGTH == 256
    'F', 'A', 'T', '1', '6', ' ', ' ', ' ',
    #endif  /* RAMDISK_FATLENGTH == 256 */

    #if RAMDISK_FATLENGTH == 128
    'F', 'A', 'T', '3', '2', ' ', ' ', ' ',
    #endif  /* RAMDISK_FATLENGTH == 128 */

    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

    /* 0x1FEB:signature */
    (uint8_t) (RAMDISK_SIGNATURE & 0xffu), ((uint8_t) (RAMDISK_SIGNATURE >> 8) & 0xffu),
};

/* STRG_SECTSIZE = 512(Define for r_media_driver_api_config.h) */
const uint8_t g_usb_pmsc_table1[STRG_SECTSIZE] =
{
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

/* STRG_SECTSIZE = 512(Define for r_media_driver_api_config.h) */
const uint8_t g_usb_pmsc_tablefat1[STRG_SECTSIZE * RAMDISK_FATSIZE] =
{
    #if RAMDISK_FATLENGTH == 341    /* FAT12 */
    RAMDISK_MEDIATYPE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, /* FAT-ID   */
    #endif  /* RAMDISK_FATLENGTH == 341 */

    #if RAMDISK_FATLENGTH == 256    /* FAT16 */
    RAMDISK_MEDIATYPE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, /* FAT-ID   */
    #endif  /* RAMDISK_FATLENGTH == 256 */

    #if RAMDISK_FATLENGTH == 128    /* FAT32 */
    RAMDISK_MEDIATYPE, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, /* FAT-ID   */
    #endif  /* RAMDISK_FATLENGTH == 128 */

    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

/* STRG_SECTSIZE = 512(Define for r_media_driver_api_config.h) */
const uint8_t g_usb_pmsc_tablefat2[STRG_SECTSIZE * RAMDISK_FATSIZE] =
{
    #if RAMDISK_FATLENGTH == 341    /* FAT12 */
    RAMDISK_MEDIATYPE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, /* FAT-ID   */
    #endif  /* RAMDISK_FATLENGTH == 341 */

    #if RAMDISK_FATLENGTH == 256    /* FAT16 */
    RAMDISK_MEDIATYPE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, /* FAT-ID   */
    #endif  /* RAMDISK_FATLENGTH == 256 */

    #if RAMDISK_FATLENGTH == 128    /* FAT32 */
    RAMDISK_MEDIATYPE, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, /* FAT-ID   */
    #endif  /* RAMDISK_FATLENGTH == 128 */

    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

/* Size:8192 STRG_SECTSIZE = 512(Define for r_media_driver_api_config.h) */
const uint8_t g_usb_pmsc_rootdir[STRG_SECTSIZE * 16ul] =
{
    'S', 'A', 'M', 'P', 'L', 'E', ' ', ' ',
    0x20, 0x20, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

/*******************************************************************************
 Private global variables and functions
 ******************************************************************************/

/******************************************************************************
 End  Of File
 ******************************************************************************/

